case و select برای ایجاد منوها و انتخابهای چندگانه بسیار کاربردی هستند و در آزمونهای عملی مطرح میشوند.
فرض کن یه منوی رستوران داری که به کاربر چندین گزینه میده: پیتزا، برگر، سالاد یا خروج. بهجای اینکه با کلی if این کار رو انجام بدی، میتونی از case استفاده کنی که خیلی تمیزتر و سریعتره. همچنین با select میتونی یه منوی حرفهای با شمارهگذاری خودکار بسازی. این جلسه بهت یاد میده چطور از این دو ابزار قدرتمند استفاده کنی!
case استفاده کنیم؟فرض کنید میخواهید چندین حالت مختلف را برای یک ورودی بررسی کنید. مثلاً کاربر یک دستور وارد میکند و شما باید بر اساس آن، کار مشخصی انجام دهید.
if (بد)if و elifcase (خوب)case برای زمانی که میخواهید یک متغیر را با چندین مقدار مختلف مقایسه کنید، بهترین گزینه است.
case در Bashنکات مهم:
case با esac (case برعکس) بسته میشود.;; (دو سمیکالن) خاتمه مییابد.* حالت پیشفرض (مشابه else در if) است.y|yes برای چند مقدار استفاده کنید.caseاین اسکریپت یک منوی ساده برای مدیریت شبکه ایجاد میکند:
توضیح: کاربر یکی از گزینهها را وارد میکند و case بر اساس آن، دستور مربوطه را اجرا میکند. اگر گزینه نامعتبر باشد، پیام «دستور نامعتبر» چاپ میشود.
case میتوانید از الگوهای مانند y|Y|yes|Yes برای پوشش چندین حالت استفاده کنید.
select چیست؟
select یک دستور فوقالعاده در Bash است که به شما امکان میدهد یک منوی عددی با گزینههای مشخص ایجاد کنید. کاربر با وارد کردن شماره گزینه، انتخاب خود را انجام میدهد.
select به صورت خودکار گزینهها را شمارهگذاری میکند و انتخاب کاربر را در متغیر REPLY ذخیره میکند.
selectselectتوضیح:
PS3 متغیر ویژهای است که پرامپت (پیام راهنما) منو را مشخص میکند.select به صورت خودکار گزینهها را شمارهگذاری میکند.character مقدار انتخابشده را نگه میدارد.REPLY شماره انتخابشده را نگه میدارد.character خالی میشود.PS3 مخفف Prompt String 3 است و برای تنظیم پیام راهنما در select استفاده میشود.
select با case و if
این مثال ترکیبی از select و if است که یک منوی حرفهای برای مدیریت شبکه ایجاد میکند:
توضیح:
select منوی شمارهدار ایجاد میکند.if و elif شماره انتخابشده (REPLY) را بررسی میکنیم.break برای خروج از حلقه استفاده شده است.select با case (روش بهتر)
روش بهتر این است که از case به جای if استفاده کنید تا کد تمیزتر و خواناتر باشد:
select و case یکی از بهترین روشها برای ایجاد منوهای حرفهای در اسکریپتهای Bash است.
case و select| ویژگی | case |
select |
|---|---|---|
| کاربرد اصلی | مقایسه یک مقدار با چندین الگو | ایجاد منوی عددی با گزینهها |
| ورودی کاربر | متن (دستور، رشته، ...) | شماره گزینه |
| شمارهگذاری خودکار | ❌ خیر (خودتان مدیریت میکنید) | ✅ بله (به صورت خودکار) |
| حالت پیشفرض | *) |
بررسی $REPLY با if یا case |
| خروج از حلقه | نیاز به break ندارد |
با break |
| استفاده از الگوها | ✅ بله (مثل y|Y|yes) |
❌ خیر |
case → برای مقایسه یک مقدار با چندین الگوی مختلف.select → برای ایجاد منوی عددی با گزینههای مشخص.case با esac و هر حالت با ;; خاتمه مییابد.select با do شروع و با done خاتمه مییابد.PS3 → پرامپت منو در select.REPLY → شماره انتخابشده در select.break → برای خروج از حلقه select.*) → حالت پیشفرض در case.یک اسکریپت بنویسید که:
select یک منو با گزینههای «سلام»، «تاریخ»، «اطلاعات سیستم» و «خروج» ایجاد کند.case انتخاب کاربر را پردازش کند.break استفاده کند.